﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Controller;

namespace GUI
{
    public partial class frmOpretOpgaver : Form
    {
        Ikunde kunden = null;
        List<Iansat> mekanikerliste;
        
        public frmOpretOpgaver(Ikunde kunde)
        {
            kunden = kunde;
            InitializeComponent();
            
        }

        private void frmOpretOpgaver_Load(object sender, EventArgs e)
        {
            AnsatController ac = new AnsatController();
            mekanikerliste = ac.HentAlleMekanikere();

            foreach (Iansat item in mekanikerliste)
            {
                if (ac.MekanikerMaerkeMatch(kunden.Maerke, item.Medarbejdernr))
                {
                    cmbMekanikere.Items.Add(item.Navn + " - SPECIALIST");
                }
                else
                {
                    cmbMekanikere.Items.Add(item.Navn);
                }
                cmbMekanikere.Update();
            }

            OpgaveController oc = new OpgaveController();
            List<Iopgave> opgaveliste = new List<Iopgave>();
            opgaveliste = oc.HentAlleOpgaver();

            foreach (Iopgave item in opgaveliste)
            {
                if (item != null)
                {
                    string[] str = { item.Opgavenummer.ToString(), item.Navn, item.Beskrivelse };
                    ListViewItem lvItem = new ListViewItem(str);
                    lstvOpgaver.Items.Add(lvItem);
                }
            }
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            int opgavenr = Convert.ToInt32(lstvOpgaver.FocusedItem.SubItems[0].Text);
            string opgavenavn = lstvOpgaver.FocusedItem.SubItems[1].Text;
            string beskrivelse = lstvOpgaver.FocusedItem.SubItems[2].Text;

            string[] str = { opgavenr.ToString(), opgavenavn, beskrivelse };
            ListViewItem lvItem = new ListViewItem(str);
            lstvValgteOpgaver.Items.Add(lvItem);
        }

        private void btnBookOpgave_Click(object sender, EventArgs e)
        {
            // opretter den nye ordre
            OrdreController oc = new OrdreController();
            GuiOrdre ordre = new GuiOrdre(DateTime.Now, kunden.Kundenr);
            oc.OpretOrdre(ordre);
          

            // opretter bookingen
            GuiBooking booking = new GuiBooking(DateTime.Now, mekanikerliste[cmbMekanikere.SelectedIndex].Medarbejdernr);
            BookingController bc = new BookingController();
            bc.OpretBooking(booking);
            

            // opretter de forskellige opgaver
            List<GuiOpgave> valgteOpgaver = new List<GuiOpgave>();
            foreach (ListViewItem item in lstvValgteOpgaver.Items)
            {
                int opgavenr = Convert.ToInt32(item.SubItems[0].Text);
                string opgavenavn = item.SubItems[1].Text;
                string opgavebeskrivelse = item.SubItems[2].Text;
                GuiOpgave opgave = new GuiOpgave(opgavenr, opgavenavn, opgavebeskrivelse);
                valgteOpgaver.Add(opgave);
            }
            // opretter opgave_booking_ordre linier i databasen
            foreach (GuiOpgave item in valgteOpgaver)
            {
                oc.OpretBookingOpgaveOrdreLinie(item.Opgavenummer, bc.HentSidstIndsatteBooking(), oc.HentSidstIndsatteOrdrenr());
            }
            MessageBox.Show("Opgaven er booket");
            if (kunden.Mail != null)
	        {
                BeskedCenter.SendMail(kunden.Mail, "Din ordre er oprettet med dette ordrenummer: " + oc.HentSidstIndsatteOrdrenr());
	        }
            if (kunden.Tlf != null)
            {
                BeskedCenter.SendSms(Convert.ToInt32(kunden.Tlf), "Din ordre er oprettet med følgende ordrenummer: " + oc.HentSidstIndsatteOrdrenr());
            }
            
            this.Close();
        }
    }
}
